課程資訊
課程名稱
軟體測試與資安檢測
Software Testing and Security Testing 
開課學期
112-1 
授課對象
電機資訊學院  電機工程學研究所  
授課教師
王 凡 
課號
EE5191 
課程識別碼
921 U2690 
班次
 
學分
3.0 
全/半年
半年 
必/選修
選修 
上課時間
星期三2,3,4(9:10~12:10) 
上課地點
博理112 
備註
總人數上限:100人 
 
課程簡介影片
 
核心能力關聯
本課程尚未建立核心能力關連
課程大綱
為確保您我的權利,請尊重智慧財產權及不得非法影印
課程概述

As the sizes and functionalities of software keep on growing, non-trivial software projects have spent more than half of their budget in testing and debugging. For Taiwan's high-tech industry, the situtaion is even worse since most software team managers and engineers do not think that they should spend money in software testing. Such a mentality rooted from Taiwan's industrial strength in OEM and ODM business but is now hurting Taiwan's effort in brand business. With the know-how in requirement engineering and system testing, Taiwan has no hope in making a successful international brand in the high-tech industry.

Software security is a highly visible and fast-growing sector of software testing. Not only the government has promoted and enforced security regulations, most companies are willing to invest in software security. 

課程目標
The course aims at teaching the students the background theory of software quality assurance (QA) and letting them play with advanced testing and security-checking tools from academia and industry. In the long-term, we anticipate to produce skillful professionals in software testing business for Taiwan's high-tech industry that can do the following.

1. Knowing the fundamentals and resources in software testing
2. Utilizing the research results from academia
3. Deploying software testing technology to various companies.
4. Understanding the basic concepts and skills in security checking. 
課程要求
 
預期每週課後學習時數
 
Office Hours
 
指定閱讀
 
參考書目
 
評量方式
(僅供參考)
 
No.
項目
百分比
說明
1. 
Final exam 
40% 
Dec. 20, 2023 20% of final exam scores will be for questions on selected midterm reports. 
2. 
Mid-term presentation 
10% 
Deadline: Nov. 1, 2023 1. Template of midterm reports in PPT is given by course website. 2. ONE main paper, must be a regular paper published in ACM/IEEE ICSE 2022-23, ACM FSE 2022-23, IEEE ASE 2022-23, ACM ISSTA 2022-23, ACM PLDI 2022-23, IEEE S&P 2022-23, ACM CCS 2022-2023, or USENIX Security 2022-2023. 3. No tool paper, no short paper, no affiliated workshop paper. 4. 2 comparison papers related to the main paper. Comparing the three papers that you selected in the above. 5. Submission including your PPT file and MP4 Video for 10mins. 6. The report must be in English and is evaluated as follows. 20% on background before the work. 20% on the motivation. 20% Techniques of the work. 20% Experiment interpretation. 20% Writing. 
3. 
Project 1: White-box unit testing with CPP and coverage instrumentation 
15% 
Deadline: Oct. 18, 2023 1. Software under test (SUT) is a GitHub open-source CPP module/ SUT has been written by yourself / SUT has been modified from the example given by the TA 2. Must write assertions to evaluate the pass or fail of the test scripts. 3. Submission: a) CPPUnit test modules, test reports, and SUT source code. b) PPT explains the SUT, your test requirements, your test plan, and your test result with coverage analysis. Your score is (line coverage) x log2(#lines) (maximum: 7.5) + 1.5 x (bugs detected) (maximum: 7.5) + 1.5 x (bugs fixed) + no. of stars in GitHub + completeness of your report (0/1) (maximum: 7.5) Maximum score: 15 
4. 
Project 2: Web testing with Selenium 
15% 
Deadline: Nov. 22, 2023 1. A software under test (SUT) is a public website chosen by a student. No two students may choose the same website. FCFS (first-come-first-select) policy is used in tie-breaking. Registration form is here. 2. Must write assertions to evaluate the pass or fail of the test scripts. 3. Submission: a) Selenium test scripts (.py), test reports b) PPT explains the SUT, your test requirements, your test plan, and your test result.  
5. 
Project 3: RWD testing based on the AI API of Test-Dragon for cross-app and cross-platform GUI E2E testing 
20% 
Deadline: Dec. 27, 2023 1. Application under test (AUT) must be a mobile APP or a web program. No two students should use the same AuT. Please register your AUT to the TA by Nov. 29, 2023. 2. On the deadline date (Dec. 27, 2023) of project 3, we will have a deomonstration party. Please prepare your slides and run your xRWD in front of the class. 3. The reference source python program, xRWD.py, and materials can be found in https://www.test-dragon.com/TestDragon/helpTestDragon/helpTBots#ExampleFuzzerLab. 4. You must first log in to Test-Dragon to see the page in the above. 5. All students must send in their github account id so that we can invite them to xRWD github by Nov. 29, 2023. You can then raise issues in the repository. 6. The students are responsible for improving the functionality of four methods in class xRWD of xRWD.py. oracle(), which files issue reports. 7. Submission: a) Your improved fuzzer.py. b) Specification of the AUT. c) Issue reports generated by your fuzzer.  
 
課程進度
週次
日期
單元主題
第1週
9/6  Syllabus &
Chapter 1: introduction 
第2週
9/13  Chapter 1: introduction 
第3週
9/20  Chapter 2: Graph-based Testing
Deadline for midterm presentation registration
Project 1 announcement: unit testing 
第4週
9/27  Chapter 2: Graph-based Testing
Confirmation of midterm presentation registration 
第5週
10/4  Chapter 2: Graph-based Testing 
第6週
10/11  Chapter 2: Graph-based Testing 
第7週
10/18  Chapter 3: Logic-based Testing
Project 1 deadline
Project 2 announcement: web-testing 
第8週
10/25  Chapter 3: Logic-based Testing 
第9週
11/1  Chapter 3: Logic-based Testing
Deadline of midterm presentation submission 
第10週
11/8  Chapter 4: Input-Space Partition Testing 
第11週
11/15  校慶停課 
第12週
11/22  Chapter 5: Mutation Testing
Project 2 deadline
Project 3 announcement: app/web RWD testing 
第13週
11/29  Chapter 5: Mutation Testing 
第14週
12/6  Symbolic Model-Checking 
第15週
12/13  Security Checking 
第16週
12/20  Final exam 
第17週
12/27  Project 3 deadline and demonstration